|
 |
Applicazioni Software |
PROGETTO n° 13 - 6/7
[138 di 166] |
 | Certamente la parte più importante della procedura
Out64bit è quella finale, riportata nella casella di testo
insieme alla sottoprocedura Clock: |
 | Come preannunciato la gestione delle
8 memorie esterne è affidata ad un
loop, per questo caricato a 8 (MOV
CX,8); gli 8 bytes coinvolti nella gestione sono assunti
dalla variabile
Dato_64, predisposta in precedenza e puntata dall'istruzione
LEA DI,Dato_64. |
 | A partire da quello meno
significativo, gli 8 bytes sono spediti,
uno dopo l'altro tramite AL, sul
Registro d'uscita 0378H/0278H
(PRNdato) e resi disponibili sulle linee
corrispondenti, i
pin 2÷pin
9
del
connettore della porta
parallela |
 | Non appena un byte è presente
sulla porta d'uscita viene creato il necessario sincronismo di memorizzazione
(clock) per la
memoria
74LS374 a cui è destinato. |
 | A questo pensa la sottoprocedura
Clock, appositamente separata dalla precedente per evidenziarne la
valenza; per comprendere meglio i concetti che descriverò tra poco può essere
utile (se non l'hai già fatto ) aprire una seconda
pagina con lo schema elettrico del progetto. |
 | In breve è necessario controllare
4 linee del
decoder binario
74LS138
con l'aiuto di altrettanti bit
del
Registro di controllo 037AH/027AH:
 | i
bit3,
bit1, bit0
controllano le 3 linee di selezione
del decoder,
A sul pin1,
B sul pin2
e C sul pin3 |
 | il
bit2 controlla contemporaneamente le 2
linee di
enable
del decoder,
G2A
e G2B, attive
basse,
pin
4 e
pin
5 |
|
 | Poichè ciascuna delle 8 uscite del
decoder (attive basse) è
collegata
(tramite in inverter) alla linea
di clock (pin11) di
una memorie esterna, è facile capire che il valore di
controllo da predisporre sul
Registro 037AH/027AH
dovrà attivarle una alla volta, in
sequenza. |
 | La scelta del valore da scrivere
sul
Registro è influenzata anche dal fatto che le
linee d'uscita di quest'ultimo (associate ai
bit3,bit1,bit0)
sono invertite internamente; tenendo conto di tutto la procedura
Clock è stata studiata per forzare i
bit3,bit2,bit1,bit0
del
Registro al giusto valore, negli 8 casi in cui è
chiamata. |
 | La prima volta il valore è
0000: il
bit2 a
0 abilita il
decoder
e i
bit3,bit1,bit0
a 000
(trasformato in 111, dagli inverter
interni) selezionano l'uscita 7 del
decoder,
producendo un
fronte attivo (di
salita) sulla linea di clock
della prima memoria (n°1),
che copierà così sulla sua uscita il byte presente
sulle
linee dato della parallela. |
 | Le volte successive il valore sarà
0001,
0010,
0011,
1000,
1001,
1010 e
1011: in ogni caso
il
bit2 a
0 mantiene abilitato il
decoder
e i
bit3,bit1,bit0
selezionano le altre uscite del
decoder, dalla 6 alla 0, garantendo
un
fronte attivo di
clock anche per le rimanenti memorie,
dalla n°2 alla n°8 |
 | Da notare che la procedura Clock
 | provvede ad aggiustare il valore binario necessario sui
bit non consecutivi
bit3,bit1,bit0
forzando il
bit3 a
1 (OR
AL,000001000B) se il valore di AL è maggiore di
3 |
 |
prima di generare un nuovo valore
riporta momentaneamente il
bit2 a
1 (OR
AL,00000100B) per
disabilitare tutte e 8 le linee di clock tra una
fase e l'altra, lasciandole in questo stato (di
attesa) anche al termine dell'ultima memorizzazione. |
|
©
2001-2006 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|